package org.KeyCrafter.obj.type;

import java.util.Iterator;

public interface ListType extends Encoded{
    // 列表方向
    int KeyCrafter_HEAD = 0;
    int KeyCrafter_TAIL = 1;

    /**
     * 从列表表头或表尾弹出一个元素
     *
     * 参加 where 决定了弹出元素的位置
     *  1. KeyCrafter_HEAD从表头弹出
     *  2. KeyCrafter_TAIL从表尾弹出
     */
    Object pop(int where);
    void push(Object value, int where);

    /*
     * 返回列表的节点数量
     */
    long length();

    // 迭代其返回对象（不是在节点中的对象）
    Iterator iterator();

    // 将范围内的节点的字符串表示添加到数组中
    void range(long start, long len, String[] reply);
}
